package com.jingyi.system.service;

import com.jingyi.common.core.domain.entity.WxUser;
import com.jingyi.system.domain.ImportData;

import java.util.List;
import java.util.Map;

/**
 * 微信患者用户 业务层
 *
 * @author jingyi
 */
public interface IWxUserService {
    /**
     * 根据条件分页查询患者数据
     *
     * @param user 患者信息
     * @return 患者数据集合信息
     */
    public List<WxUser> selectUserList(WxUser user);


    /**
     * 查询所有患者
     *
     * @return 患者列表
     */
    public List<WxUser> selectUserAll();


    /**
     * 通过患者ID查询患者
     *
     * @param userId 患者ID
     * @return 患者对象信息
     */
    public WxUser selectUserById(Long userId);

    /**
     * 通过患者openId查询患者
     *
     * @param openId 微信openId
     * @return 患者对象信息
     */
    public WxUser selectUserByOpenId(String openId);

    /**
     * 修改患者信息
     *
     * @param user 患者信息
     * @return 结果
     */
    public int updateUser(WxUser user);

    /**
     * 修改用户状态
     *
     * @param user 用户信息
     * @return 结果
     */
    public int updateUserState(WxUser user);

    /**
     * 新增患者信息
     *
     * @param user 患者信息
     * @return 结果
     */
    public int insertUser(WxUser user);

    /**
     * 通过患者ID删除患者
     *
     * @param userId 患者ID
     * @return 结果
     */
    public int deleteUserById(Long userId);

    /**
     * 批量删除患者信息
     *
     * @param userIds 需要删除的患者ID
     * @return 结果
     */
    public int deleteUserByIds(Long[] userIds);

    /**
     * 患者状态统计
     *
     * @return 统计信息
     */
    public Map<String,Object> getStatistic();

    /**
     * 通过根据条件查询患者信息
     *
     * @param user 患者信息
     * @return 结果
     */
    public WxUser getByMap(WxUser user);

    /**
     * 患者信息导入
     *
     * @param importData 数据
     * @return 结果
     */
    public void importData(ImportData importData);

    /**
     * 患者信息导入
     *
     * @param user 用户数据
     * @return 结果
     */
    public WxUser insertOrUpdateByOpenId(WxUser user);
}
